Небольшая предыстория. У нас в компании мы решили сделать коробочный проект по распознаванию номеров (для открытия шлагбаумов, учёта проезжающих машин и т.д. и т.п.). В качестве основы взяли одноплатный Jetson Nano.
В качестве эксперимента перенесли распознавание номеров, написанное на Python и работающее в облаке, на Jetson Nano. Результаты были неудовлетворительные — почти полная загрузка CPU по причине того, что использующийся для препроцессинга OpenCV работал на CPU и постпроцессинг модели Yolo также был на CPU.
К отрицательным моментам можно также отнести:
-
Декодинг на CPU вместо аппаратного декодера, имеющегося у Jetson Nano
-
Постоянно перекопирующуюся информацию из памяти GPU в память CPU (Хотя Jetson Nano делит обычную оперативную память между GPU и CPU).
-
Ожидание GPU — 128 CUDA ядер просто сидели без дела пока 4 ARM ядра CPU были нагружены под завязку.
Решено было всё это переписывать на C++ и по возможности писать